package com.alks.pad.mapper.last;

import com.alks.entity.data.entity.*;
import com.alks.pad.data.dto.last.PcLastStatusDto;
import com.alks.pad.data.dto.last.sizeNoDto;
import com.alks.pad.data.request.last.LastCollectDetailRequest;
import com.alks.pad.data.request.last.LotNoRequest;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface LastCollectDetailMapper {

    /**
     * 获取指令集合
     * @param request
     * @return
     */
    List<String> getLotNos(LotNoRequest request);

    /**
     * 指令明细信息
     * @param lotNo
     * @param companyId
     * @return
     */
    Map<String, Object> getLotDetail(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询指令生产状况
     * @param lotNo
     * @param companyId
     */
    List<PcLastStatusDto> LastCollectDetail(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询当日投产记录
     * @param companyId
     * @param deptNo
     * @return
     */
    List<PcLastCollectDetail> getTodayLastCollectDetail(@Param("companyId") String companyId, @Param("deptNo") String deptNo);

    /**
     * 当日投产状况
     * @param companyId
     * @param deptNo
     * @return
     */
    List<Map<String,Object>> getTodayLastCollectDetailStatus(@Param("companyId") String companyId, @Param("deptNo") String deptNo);

    /**
     * 投产未满明细
     * @param deptNo
     * @param companyId
     * @return
     */
    List<PcLastStatusDto> unLastCollectDetail(@Param("deptNo") String deptNo, @Param("companyId") String companyId);

    /**
     * 查询指令是否存在
     * @param lotNo
     * @param companyId
     * @return
     */
    PcLotHead getLotHead(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询号码明细
     * @param lotNo
     * @param companyId
     * @return
     */
    List<sizeNoDto>  SizeByLotNo(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询指令号码
     * @param companyId
     * @param lotNo
     * @param sizeNo
     */
    PcLotDetail getLotDetailBySizeNo(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("sizeNo") String sizeNo);

    /**
     * 查询投产号码明细
     * @param companyId
     * @param lotNo
     * @param sizeNo
     * @return
     */
    PcLastStatus getPcLastStatus(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("sizeNo") String sizeNo);

    /**
     * 查询已产号码明细
     * @param companyId
     * @param lotNo
     * @param sizeNo
     * @return
     */
    PcLastStatus2 getPcLastStatus2(@Param("companyId") String companyId, @Param("lotNo") String lotNo, @Param("sizeNo") String sizeNo);

    /**
     * 新增投产号码
     * @param pcLastStatus
     * @return
     */
    int addPcLastStatus(PcLastStatus pcLastStatus);

    /**
     * 新增投产号码明细
     * @param pcLastCollectDetail
     * @return
     */
    int addPcLastCollectDetail(PcLastCollectDetail pcLastCollectDetail);

    /**
     * 修改投产号码明细
     * @param pcLastStatus
     */
    int updatePcLastStatus(PcLastStatus pcLastStatus);

    /**
     * 删除投产号码明细
     * @param request
     * @return
     */
    int delLastCollectDetail(LastCollectDetailRequest request);

    /**
     * 新增产出号码
     * @param pcLastStatus2
     * @return
     */
    int addPcLastStatus2(PcLastStatus2 pcLastStatus2);

    /**
     * 修改产出数量
     * @param pcLastStatus2
     * @return
     */
    int updatePcLastStatus2(PcLastStatus2 pcLastStatus2);

    /**
     * 新增产出号码明细
     * @param pcLastCollectDetail
     * @return
     */
    int addPcLastCollectDetail2(PcLastCollectDetail pcLastCollectDetail);

    /**
     * 查询前段投产指令
     * @param request
     * @return
     */
    List<String> getFrontSectionLotNo(LastCollectDetailRequest request);

    /**
     * 查询指令产出状况
     * @param request
     * @return
     */
    List<PcLastStatusDto> LastCollectDetail2(LotNoRequest request);

    /**
     * 查询当日产出记录
     * @param companyId
     * @param deptNo
     * @return
     */
    List<PcLastCollectDetail> getTodayLastCollectDetail2(@Param("companyId") String companyId, @Param("deptNo") String deptNo);

    /**
     * 当日产出状况
     * @param companyId
     * @param deptNo
     * @return
     */
    List<Map<String, Object>> getTodayLastCollectDetail2Status(@Param("companyId") String companyId, @Param("deptNo") String deptNo);

    /**
     * 删除产出号码明细
     * @param request
     * @return
     */
    int delLastCollectDetail2(LastCollectDetailRequest request);

    /**
     * 不良原因
     * @param deptType
     * @param companyId
     * @return
     */
    List<PcQualityType> getReasonList(@Param("deptType") String deptType, @Param("companyId") String companyId);

    /**
     * 当日录入记录
     * @param companyId
     * @param deptNo
     */
    List<PcLastingQualityCollect> getDayAdd(@Param("companyId") String companyId, @Param("deptNo") String deptNo);

    /**
     * 删除不良记录
     * @param request
     * @return
     */
    int delPcLastingQualityCollect(PcLastingQualityCollect request);

    /**
     * 添加品质记录
     * @param request
     * @return
     */
    int addPcLastingQualityCollect(PcLastingQualityCollect request);
}
